<template>
    <!-- 
    <b-modal ref="my-modal" hide-footer title="Using Component Methods">
     <div class="d-block text-center">
       <h3>Hello From My Modal!</h3>
     </div>
     <b-button class="mt-3" variant="outline-danger" block @click="hideModal">Close Me</b-button>
     <b-button class="mt-2" variant="outline-warning" block @click="toggleModal">Toggle Me</b-button>
   </b-modal> 
    -->
    <!--
        body-class="modalStyle" 表示样式
        size="lg" 表示模态窗口大小 xl,lg,sm,full
        hide-footer 表示隐藏底部按钮
        hide-header 表示隐藏头部内容
        no-close-on-backdrop 表示鼠标点击背景不可关闭
        hide-header-close 表示隐藏头部关闭按钮
        centered 居中
        ok-title=“确定” 
        cancel-title=取消
        @ok="handleOk" 
        @cancel="handleCancel"
        scrollable 滚动条
        hide-backdrop 隐藏背景
        wrapClassName="ant-modal-cust-warp" 
        style="top:5%;height: 85%;overflow-y: hidden" 样式
        :modal-class="my-modal"
        dialog-class="modal-dialog"
        @hidden 关闭窗体触发事件
    -->
    <b-modal ref="my-modal" :title="title" scrollable  @hidden="onHidden" size="xl" hide-footer no-close-on-backdrop >
        <div class="d-block text-center">
            <div class="card card-custom gutter-b example example-compact" id="tableLcRoleBody">
              
                <div class="card-body">
                    <!--查询条件-->
                    <div class="m-form m-form--fit m-form--label-align-left m-form--group-seperator-dashed">
                        <div class="m-portlet__body">
                            <div class="form-group m-form__group row">
                                <label class="col-form-label">授权系统:</label>
                                <div class="col-lg-2">
                                    <el-select v-model="searchForm.sysModeId" placeholder="请选择">
                                        <el-option
                                        v-for="item in sysModeList"
                                        :key="item.id"
                                        :label="item.name"
                                        :value="item.id">
                                        </el-option>
                                    </el-select>
                                </div>
                                <label class="col-form-label">类型:</label>
                                <div class="col-lg-2">
                                    <select class="form-control" v-model="searchForm.type" style="width: 150px">
                                        <option value="">---请选择---</option>
                                        <option value="0">平台权限</option>
                                        <option value="1">业务权限</option>
                                    </select>
                                </div>
                                <label class="col-form-label">角色名称:</label>
                                <div class="col-lg-2">
                                    <input type="text" class="form-control" v-model="searchForm.name" placeholder="请输入">
                                </div>
                                <b-button :pressed="false" variant="btn btn-primary font-weight-bold mr-2" @click="search()"><span><i class="fa fa-search"></i><span>查询</span></span></b-button>
                                <b-button :pressed="false" variant="btn btn-light font-weight-bold mr-2" @click="resetAll()"> <span><span>清空条件</span></span></b-button>
                            </div>
                        </div>
                        <div class="m-portlet__foot m-portlet__no-border m-portlet__foot--fit">
                            <div class="m-form__actions m-form__actions--solid">
                                <div class="row">
                                    <div class="col m--align-left">                                        
                                        <!-- :disabled="this.sels.length === 0" 如果没有数据让确认按钮失效 -->
                                        <button class="btn btn-light-primary font-weight-bold font-size-sm py-3 px-8 mr-2"
                                            @click="doSelect" :disabled="this.sels.length === 0">
                                            <span><i class="flaticon-interface-7"></i><span>确 认</span></span>
                                        </button>
                                    </div>
                                    <div class="col m--align-right">
                                        
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <!--分页组件-->
                <el-table style="width: 100%" stripe border @selection-change="handleSelectionChange" highlight-current-row :data="roleList" >
                <!-- 复选框 -->
                <el-table-column type="selection" width="40"></el-table-column>
                <el-table-column label="序号" width="50">
                    <template slot-scope="scope">
                    {{scope.$index+1}} 
                    </template>
                </el-table-column>
                <el-table-column align="left" prop="name" show-overflow-tooltip label="角色名称"></el-table-column>
                <el-table-column align="left" prop="sysName" show-overflow-tooltip label="授权系统"></el-table-column>   
                <el-table-column align="left" prop="type" show-overflow-tooltip label="类型">
                    <template slot-scope="scope">
                    <div v-if="scope.row.type == 0">
                        <span class="label label-lg label-light-primary label-inline mt-lg-0 mb-lg-0 my-2 font-weight-bold py-4">平台权限</span>
                    </div>
                    <div v-else-if="scope.row.type == 1">
                        <span class="label label-lg label-light-warning label-inline mt-lg-0 mb-lg-0 my-2 font-weight-bold py-4">业务权限</span>
                    </div>
                    <div v-else>
                        <span class="label label-lg label-light-warning label-inline mt-lg-0 mb-lg-0 my-2 font-weight-bold py-4">未知</span>
                    </div>
                    </template>
                </el-table-column>
                </el-table>
                <div class="block">
                <el-pagination
                    hide-on-single-page   
                    @size-change="handleSizeChange"        
                    @current-change="handleCurrentChange"  
                    :current-page="pageNo"                
                    :page-sizes="[5, 10, 30, 50]"          
                    :page-size="pageSize"			  
                    layout="->,total, sizes, prev, pager, next, jumper"
                    :total="totalCount">		
                </el-pagination>
                </div>
            </div>
        </div>
        <template slot="modal-footer">
            <!--自定义按钮-->
        </template>
    </b-modal>    
</template>
<script>
import apiUtil from "@/core/util/apiUtil.js";
import { handleNotify,handleAlert,handleConfirm,showWating,closeWating} from "@/core/util/jehcUtil.js";
export default {
    data(){
        return {
            title:"角色选择器",
            searchForm:{sysModeId: "",type:"",name:""},
            sysModeList:[],
            roleList:[],
            ids:[],
            sels: [], //当前选框选中的值
            pageNo:1,      // 默认当前是第一页
            pageSize:5,    // 当前每页的数据是5条
            totalCount:0   // 总数默认为0
        }
    },
    components: {
    },
    watch: {
    },
    mounted() {        
       
    },
    methods: {        
        showModal(data) {
            this.$refs['my-modal'].show();     
            this.initList();   // 按当前的页号和每页的数据量进行查询
            this.initSysModeList();      
            let candidateGroupId = data.lcNodeCandidate[0].candidateGroupId;
            this.doIds(candidateGroupId);
        },
        hideModal() {
            this.$refs['my-modal'].hide()
        },
        toggleModal() {
            // 当模态已隐藏时，我们传递要返回焦点的按钮的ID
            this.$refs['my-modal'].toggle('#toggle-btn')
        },
        onHidden(){//关闭窗体触发事件
            // this.$emit("change",null);
        },
        doIds(candidateGroupId){
            var orgArray = candidateGroupId.split(',');
            for(var i = 0; i < orgArray.length; i++){
                var org = orgArray[i];
                var org_ = org.split(":");
                this.ids.push(org_[1]);
            }
        },
        doSelect(){
            if(this.sels.length === 0){
                handleAlert("请选择", "warning", 3)
                return;
            }
            // 选择前提示
            this.$confirm("确认选择记录吗?", "提示", {type: "warning",}).then(() => {
                this.hideModal();//关闭窗体
                this.$emit("change", this.sels);//组件传值，即向父级模态框中传递值，采用change方式，目标刷新主列表使用
            }).catch(()=>{});//注意这里，这里是重点！！！; 
        },
        initList(){
            showWating({renderBody:"tableLcRoleBody"});
            var params = {};
            params.usePageNo = true;//采用第几页进行分页（兼容）
            params.pageSize = this.pageSize;//页面显示记录条数，在页面显示每页显示多少项的时候
            params.pageNo = this.pageNo;//开始的记录序号   
            params.searchJson = JSON.stringify(this.searchForm);//为form元素     
            apiUtil.queryPage(process.env.VUE_APP_OAUTH_API+"/oauthRole/list?delFlag=0", params).then(({ data }) => {
                this.roleList = data.data;//给结果集赋值
                this.totalCount = data.total;// 获取当前数据的总数    
            });
        },            
        handleSelectionChange(sels) {//获取选中的值
            this.sels = sels;
        },
        handleSizeChange(val) { // 修改每页所存数据量的值所触发的函数
            this.pageSize = val;  // 修改页的大小
            this.initList();       // 按新的pageNo和pageSize进行查询
        },
        handleCurrentChange(val) { // 修改当前页所触发的函数
            this.pageNo = val;       // 更新当前的页
            this.initList();          // 按新的pageNo和pageSize进行查询
        },
        search(){
            this.pageNo = 1;       // 更新当前的页
            this.initList();          // 按新的pageNo和pageSize进行查询
        },
        resetAll(){
            Object.assign(this.$data.searchForm, this.$options.data().searchForm);
            this.search();
        },
        initSysModeList(){
            let params = {};
            apiUtil.query(process.env.VUE_APP_OAUTH_API+"/oauthSysMode/listAll", params).then(({ data }) => {
                this.sysModeList = data.data;
            });
        },
   }
}
</script>